<?php
declare (strict_types = 1);

namespace app\common\traits;

use think\response\Json;

/**
 * 返回json Trait类
 */
trait ResponseJson
{
    /**
     * 返回封装后的 API 数据到客户端
     * @param int|null $code
     * @param string $msg
     * @param array $data
     * @return Json
     */
    protected final function renderJson(int $code = null, string $msg = '', array $data = []): Json
    {
        return json(compact('code', 'msg', 'data'));
    }

    /**
     * 返回操作成功json
     * @param array|string $data
     * @param string $message
     * @return Json
     */
    protected final function renderJsonSuccess($data = [], string $msg = 'success'): Json
    {
        if (is_string($data)) {
            $msg = $data;
            $data = [];
        }
        return $this->renderJson(config('status.success'), $msg, $data);
    }

    /**
     * 返回操作失败json
     * @param string $msg
     * @param array $data
     * @return Json
     */
    protected final function renderJsonError(string $msg = 'error', array $data = []): Json
    {
        return $this->renderJson(config('status.error'), $msg, $data);
    }
}
